package br.ufmg.dcc.vod.remoteworkers.processor;

import br.edu.ufcg.lsd.commune.api.Remote;
import br.ufmg.dcc.vod.remoteworkers.Command;
import br.ufmg.dcc.vod.remoteworkers.ID;
import br.ufmg.dcc.vod.remoteworkers.Result;
import br.ufmg.dcc.vod.remoteworkers.scheduler.CommandInterested;

@Remote
public interface Processor {

	public static final long IDLE_TOKEN = -1l;
	
	public void process(CommandInterested interested, Command command);

	public void release(long token);

	public void workDone(WorkHandle handler, ID id, Result result, Exception e);
	
}